为什么会发生CLR FatalExecutionEngineError异常?

您所在的位置:网站首页 oracle 错误代码0xc0000005 为什么会发生CLR FatalExecutionEngineError异常?

为什么会发生CLR FatalExecutionEngineError异常?

#为什么会发生CLR FatalExecutionEngineError异常?| 来源: 网络整理| 查看: 265

我们使用一个封装数值的结构,我发现当在表达式中使用此结构的可空版本时,会发生FatalExecutionEngineError:

附加信息:运行库遇到致命错误。错误的地址是线程0x52d8上的0x729c1e04。错误代码为0xc0000005。此错误可能是CLR中的错误,也可能是用户代码的不安全或不可验证部分的错误。此错误的常见来源包括COM-interop或PInvoke的用户封送处理错误,这可能会损坏堆栈。

我使用的是Visual Studio Premium 2013更新3,这里是源代码(C#,目标.NET Framework4.5):

代码语言:javascript复制using System; using System.Globalization; namespace ConsoleApplication4 { public struct Number { ValueType _val; private Number(double val) { this._val = val; } public static implicit operator double(Number val) { return Convert.ToDouble(val._val, CultureInfo.InvariantCulture); } public static implicit operator Number(double val) { return new Number(val); } } class Program { static void Main(string[] args) { Number? b = 1.2; var c = b - 1.2; Number b1 = 1.2; var c1 = b1 - 1.2; } } }

注意,添加这个解决了这个问题,所以它不是紧急的,但是我非常感兴趣为什么这个问题实际上会发生。

代码语言:javascript复制public static implicit operator double(Number? val) { return Convert.ToDouble(val.GetValueOrDefault()._val, CultureInfo.InvariantCulture); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3